package cn.lcvc.xnc.authority.service;

import cn.lcvc.xnc.authority.model.SysUser;
import cn.lcvc.xnc.authority.model.query.SysUserQuery;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotNull;

public interface SysUserService extends BaseService<SysUser, SysUserQuery>{
    /**
     * 管理账户登录
     * @param username 账户名
     * @param password 密码
     * @return  true表示登录成功，false表示登录失败
     */
    boolean login(String username, String password);

    /**
     * 批量删除指定账户
     * 说明：
     * 1.不能自己删除自己
     * 2.如果该账户参与过网站管理则不允许删除
     * （1）发表、编辑过产品
     * 3.删除该账户的同时，移除相应的所有角色关系
     * 4.暂时不考虑生效：不能删除角色级别比自己高的角色
     * @param user 执行删除的管理员账户
     * @param ids 多个账户的主键集合
     */
    void deleteByUser(@NotNull(message="请先登录")SysUser user, Long[] ids);

    /**
     * 修改密码
     * 说明：
     * 1.本方法不对原密码、新密码和确认密码的规则进行验证，请在web层验证后再传入
     * @param username 必填
     * @param password 必填
     * @param newPass 必填
     * @param confirmPass 必填
     */
    void updatePassword(String username,String password,String newPass,String confirmPass);


    /**
     * 上传头像文件，并将上传后的用户头像信息存储到数据库
     * 说明：
     * 1.头像的扩展名会统一改为小写字母
     * 2.上传头像成功后，会移除之前的头像（如果该头像未被覆盖）
     * @param user 要上传的账户信息
     * @param file
     * @return
     */
    String uploadHeadImgFile(SysUser user, MultipartFile file);



}
